﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace FrbaCommerce.Comprar_Ofertar
{
    public partial class frm_subasta : Form
    {
        private DataRow dr_publicacion;
        private Decimal maxima_oferta;

        public frm_subasta(DataRow publicacion)
        {
            InitializeComponent();
            this.dr_publicacion = publicacion;
        }

        private void validar_permite_preguntas()
        {
            BaseDeDatos baseDeDatos = BaseDeDatos.Instance;
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.CommandText = "LOS_GDDES.PUBLICACION_PERMITE_PREGUNTAS";
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.Parameters.AddWithValue("@id_publicacion", dr_publicacion.Field<Decimal>("ID_PUBLICACION"));
            int permite_preguntas = baseDeDatos.ejecuta(sqlCommand);
            if (permite_preguntas == 1)
            {
                btn_preguntar.Enabled = true;
            }
            else
            {
                btn_preguntar.Enabled = false;
            }
        }

        private void frm_subasta_Load(object sender, EventArgs e)
        {
            lbl_cod.Text = dr_publicacion.Field<Decimal>("COD_PUBLICACION").ToString();
            lbl_fecVen.Text = dr_publicacion.Field<DateTime>("FECHA_VENCIMIENTO").ToString();
            lbl_descripcion.Text = dr_publicacion.Field<string>("DESCRIPCION");
            lbl_precioIncial.Text = dr_publicacion.Field<Decimal>("PRECIO").ToString();
            cargar_lbl_ultimaOferta();
            validar_permite_preguntas();
            verificar_calificaciones();

            if (dr_publicacion.Field<Decimal>("ID_USUARIO") == BaseDeDatos.Instance.idUsuario)
            {
                btn_ofertar.Enabled = false;
                btn_preguntar.Enabled = false;
            }

            if (dr_publicacion.Field<Decimal>("ID_ESTADO") == 4)
            {
                btn_ofertar.Enabled = false;
            }
        }

        private void verificar_calificaciones()
        {
            BaseDeDatos baseDeDatos = BaseDeDatos.Instance;
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.CommandText = "LOS_GDDES.SP_VERIFICAR_CALIFICACIONES";
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.Parameters.AddWithValue("id_usuario", baseDeDatos.idUsuario);
            DataTable calificaciones = baseDeDatos.consulta(sqlCommand);
            int cal = calificaciones.Rows[0].Field<int>("CANT_CALIFICACIONES");

            if (cal > 4)
            {
                btn_ofertar.Enabled= false;
                MessageBox.Show("Diculpe no puede ofertar, debe calificar si compras previas.");
            }
            else
            {
                btn_ofertar.Enabled= true;
            }
        }

        private void cargar_lbl_ultimaOferta()
        {
            BaseDeDatos baseDeDatos = BaseDeDatos.Instance;
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.CommandText = "LOS_GDDES.OBTENER_MAYOR_OFERTA";
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.Parameters.AddWithValue("@id_publicacion", dr_publicacion.Field<Decimal>("ID_PUBLICACION"));
            DataTable dt_maximaOferta = baseDeDatos.consulta(sqlCommand);
            maxima_oferta = dt_maximaOferta.Rows[0].Field<Decimal>("MONTO_OFERTA");
            lbl_ultimaOferta.Text = String.Format("{0:0,0.00}", maxima_oferta);
        }

        private void btn_ofertar_Click(object sender, EventArgs e)
        {
            frm_ofertar frm_ofertar;
            if (maxima_oferta == 0)
                frm_ofertar = new frm_ofertar(dr_publicacion, dr_publicacion.Field<Decimal>("PRECIO"));
            else
                frm_ofertar = new frm_ofertar(dr_publicacion, maxima_oferta);
            frm_ofertar.ShowDialog();
        }
       
        private void frm_subasta_Activated(object sender, EventArgs e)
        {
            cargar_lbl_ultimaOferta();
        }

        private void btn_preguntar_Click(object sender, EventArgs e)
        {      
            frm_preguntar frm_preguntar = new frm_preguntar(dr_publicacion);
            frm_preguntar.ShowDialog();
        }       
    }
}
